<!DOCTYPE html>
<!-- saved from url=(0043)https://docs.jeequan.com/docs/jeepay/deploy -->
<html lang="zh-CN" class=" " style=""><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>部署运行 - Powered by MinDoc</title>

    
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="renderer" content="webkit">
    <meta name="author" content="Minho">
    <meta name="keywords" content="jeepay文档,xxpay文档,支付系统文档,开源聚合支付系统文档,Jeepay文档,功能开发">
    <meta name="description" content="功能开发-介绍jeepay计全支付系统使用,二次开发部署文档.">

    
    <link href="./部署运行 - Powered by MinDoc_files/bootstrap.min.css" rel="stylesheet">

    <link href="./部署运行 - Powered by MinDoc_files/style.min.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/font-awesome.min.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/nprogress.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/kancloud.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/jstree.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/mermaid.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/sequence-diagram-min.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/editormd.preview.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/markdown.preview.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/github.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/katex.min.css" rel="stylesheet">
    <link href="./部署运行 - Powered by MinDoc_files/print.css" media="print" rel="stylesheet">

    <script type="text/javascript">window.book={"identify":"jeepay"};</script>
<link rel="stylesheet" href="./部署运行 - Powered by MinDoc_files/layer.css" id="layuicss-skinlayercss"></head>
<body>
<div class="m-manual manual-mode-view manual-reader">
    <header class="navbar navbar-static-top manual-head" role="banner">
        <div class="container-fluid">
            <div class="navbar-header pull-left manual-title">
                <span class="slidebar" id="slidebar"><i class="fa fa-align-justify"></i></span>
                <a href="https://docs.jeequan.com/docs/jeepay" title="Jeepay文档" class="book-title">Jeepay文档</a>
                <span style="font-size: 12px;font-weight: 100;"></span>
            </div>
            <div class="navbar-header pull-right manual-menu">
                <a href="javascript:window.print();" id="printSinglePage" class="btn btn-default" style="margin-right: 10px;"><i class="fa fa-print"></i> 打印</a>
                
                <div class="dropdown pull-right" style="margin-right: 10px;">
                    <a href="https://docs.jeequan.com/" class="btn btn-default"><i class="fa fa-home" aria-hidden="true"></i> 首页</a>
                </div>
                <div class="dropdown pull-right" style="margin-right: 10px;">
                
                
                
                </div>
                
            </div>
        </div>
    </header>
    <article class="container-fluid manual-body">
        <div class="manual-left">
            <div class="manual-tab">
                <div class="tab-navg">
                    <span data-mode="view" class="navg-item active"><i class="fa fa-align-justify"></i><b class="text">目录</b></span>
                    <span data-mode="search" class="navg-item"><i class="fa fa-search"></i><b class="text">搜索</b></span>
                </div>
                <div class="tab-util">
                    <span class="manual-fullscreen-switch">
                        <b class="open fa fa-angle-right" title="展开"></b>
                        <b class="close fa fa-angle-left" title="关闭"></b>
                    </span>
                </div>
                <div class="tab-wrap">
                    <div class="tab-item manual-catalog">
                        <div class="catalog-list read-book-preview jstree jstree-1 jstree-default" id="sidebar" role="tree" tabindex="0" aria-activedescendant="75" aria-busy="false"><ul class="jstree-container-ul jstree-children jstree-wholerow-ul jstree-no-dots" role="group"><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="3_anchor" id="3" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/index" tabindex="-1" title="Jeepay" data-version="1636477516" id="3_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>Jeepay</a></li><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="4_anchor" aria-expanded="true" id="4" class="jstree-node  jstree-open"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/introduction" tabindex="-1" title="系统介绍" data-version="1624871984" id="4_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>系统介绍</a><ul role="group" class="jstree-children"><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="5_anchor" id="5" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/framework" tabindex="-1" title="系统架构" data-version="1715132862" id="5_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>系统架构</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="6_anchor" id="6" class="jstree-node  jstree-leaf jstree-last"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/function" tabindex="-1" title="功能列表" data-version="1624872022" id="6_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>功能列表</a></li></ul></li><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="7_anchor" aria-expanded="true" id="7" class="jstree-node  jstree-open"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/develop" tabindex="-1" title="开发部署" data-version="1624872040" id="7_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>开发部署</a><ul role="group" class="jstree-children"><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="10_anchor" id="10" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/dev_serv" tabindex="-1" title="功能开发" data-version="1624872069" id="10_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>功能开发</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="11_anchor" id="11" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/dev_channel" tabindex="-1" title="通道对接" data-version="1636345825" id="11_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>通道对接</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="12_anchor" id="12" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/ui" tabindex="-1" title="UI规范" data-version="1624872087" id="12_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>UI规范</a></li><li role="treeitem" aria-selected="true" aria-level="2" aria-labelledby="13_anchor" id="13" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow jstree-wholerow-clicked">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor jstree-clicked" href="https://docs.jeequan.com/docs/jeepay/deploy" tabindex="-1" title="部署运行" data-version="1718189984" id="13_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>部署运行</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="75_anchor" id="75" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow jstree-wholerow-hovered">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor jstree-hovered" href="https://docs.jeequan.com/docs/jeepay/jeepay-1d99ciatu11h5" tabindex="-1" title="常见问题" data-version="1703915761" id="75_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>常见问题</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="82_anchor" id="82" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/jeepay-1dbdn8bqgo270" tabindex="-1" title="系统使用" data-version="1666439979" id="82_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>系统使用</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="625_anchor" id="625" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/jeepay-1dtoth2rhr9sj" tabindex="-1" title="支付宝沙箱教程" data-version="1654824191" id="625_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>支付宝沙箱教程</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="634_anchor" id="634" class="jstree-node  jstree-leaf jstree-last"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/jeepay-1dvukp7mpq96q" tabindex="-1" title="Docker部署" data-version="1657277771" id="634_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>Docker部署</a></li></ul></li><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="669_anchor" aria-expanded="true" id="669" class="jstree-node  jstree-open"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/ifstore" tabindex="-1" title="接口市场" data-version="1679201383" id="669_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>接口市场</a><ul role="group" class="jstree-children"><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="672_anchor" id="672" class="jstree-node  jstree-leaf jstree-last"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/jeepay-1ejdnsuhveb16" tabindex="-1" title="支付接口安装" data-version="1679215111" id="672_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>支付接口安装</a></li></ul></li><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="8_anchor" aria-expanded="true" id="8" class="jstree-node  jstree-open"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/interface" tabindex="-1" title="接口文档" data-version="1624872115" id="8_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>接口文档</a><ul role="group" class="jstree-children"><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="14_anchor" id="14" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/api_rule" tabindex="-1" title="接口规则" data-version="1681101577" id="14_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>接口规则</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="15_anchor" id="15" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/payment_api" tabindex="-1" title="支付接口" data-version="1704857925" id="15_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>支付接口</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="16_anchor" id="16" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/refund_api" tabindex="-1" title="退款接口" data-version="1624872147" id="16_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>退款接口</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="65_anchor" id="65" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/transfer_api" tabindex="-1" title="转账接口" data-version="1629107892" id="65_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>转账接口</a></li><li role="treeitem" aria-selected="false" aria-level="2" aria-labelledby="69_anchor" id="69" class="jstree-node  jstree-leaf jstree-last"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/division_api" tabindex="-1" title="分账接口" data-version="1651010086" id="69_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>分账接口</a></li></ul></li><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="465_anchor" id="465" class="jstree-node  jstree-leaf"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/jeepay-1dg3r7b2remns" tabindex="-1" title="SDK下载" data-version="1678379723" id="465_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>SDK下载</a></li><li role="treeitem" aria-selected="false" aria-level="1" aria-labelledby="9_anchor" id="9" class="jstree-node  jstree-leaf jstree-last"><div unselectable="on" role="presentation" class="jstree-wholerow">&nbsp;</div><i class="jstree-icon jstree-ocl" role="presentation"></i><a class="jstree-anchor" href="https://docs.jeequan.com/docs/jeepay/contact" tabindex="-1" title="联系我们" data-version="1698809527" id="9_anchor"><i class="jstree-icon jstree-themeicon jstree-themeicon-hidden" role="presentation"></i>联系我们</a></li></ul></div>

                    </div>
                    <div class="tab-item manual-search">
                        <div class="search-container">
                            <div class="search-form">
                                <form id="searchForm" action="https://docs.jeequan.com/docs/jeepay/search" method="post">
                                    <div class="form-group">
                                        <input type="search" placeholder="请输入搜索关键字" class="form-control" name="keyword">
                                        <button type="submit" class="btn btn-default btn-search" id="btnSearch">
                                            <i class="fa fa-search"></i>
                                        </button>
                                    </div>
                                </form>
                            </div>
                            <div class="search-result">
                                <div class="search-empty">
                                    <i class="fa fa-search-plus" aria-hidden="true"></i>
                                    <b class="text">暂无相关搜索结果！</b>
                                </div>
                                <ul class="search-list" id="searchList">
                                </ul>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <div class="m-copyright">
                <p>
                    本文档由 <a href="https://www.jeequan.com/" target="_blank">计全科技</a> 发布
                </p>
            </div>
        </div>
        <div class="manual-right">
            <div class="manual-article">
                
                <div class="article-content">
                    <div class="article-body  markdown-body editormd-preview-container" id="page-content"><article class="markdown-article-inner"><div class="markdown-toc editormd-markdown-toc" style="height: 866px;"><ul class="markdown-toc-list"><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#2nrixc" level="2">环境准备</a></li><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#8e9to2" level="2">一键部署</a></li><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#5x89iw" level="2">服务端部署</a></li><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#clld99" level="2">前端部署</a></li><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#a2okpl" level="2">Nginx配置</a></li><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#eh20l8" level="2">初始账号</a></li><li class="directory-item"><a class="directory-item-link directory-item-link-2" href="https://docs.jeequan.com/docs/jeepay/deploy#7sm7az" level="2">官方演示环境</a></li></ul></div><div class="markdown-article"><blockquote class="default">
<p class="line">介绍Jeepay支付系统云服务环境部署（Docker等其他部署方式，后续推出），以下部署是在阿里云4核8G服务器部署，其他环境安装仅供参考。<br><br>注：以下部署内容需要有一定java和运维经验，如不懂如何部署可联系官方收费技术支持服务（QQ:<code>13527422</code>）。</p>
</blockquote><h2 id="2nrixc" class="markdown-heading"><a name="2nrixc" class="reference-link"></a><span class="header-link octicon octicon-link"></span>环境准备</h2><p class="line">云服务器推荐购买阿里云（腾讯云 或 华为云）的主机，建议不低于以下配置：</p><table>
<thead>
<tr>
<th>操作系统</th>
<th>CPU</th>
<th>内存</th>
<th>带宽</th>
<th>其他</th>
</tr>
</thead>
<tbody><tr>
<td>Linux CentOS 7.X （或以上）</td>
<td>4核</td>
<td>8G</td>
<td>2M+（或弹性）</td>
<td>开发测试环境配置再低些也可以部署</td>
</tr>
</tbody></table><p class="line">软件环境需安装：   </p><table>
<thead>
<tr>
<th>软件名称</th>
<th>版本</th>
<th>说明</th>
</tr>
</thead>
<tbody><tr>
<td>Jdk</td>
<td>1.8</td>
<td>java运行环境，在jdk1.8下开发，其他版本没测试</td>
</tr>
<tr>
<td>Redis</td>
<td>3.2.8</td>
<td>分布式缓存，高版本也支持</td>
</tr>
<tr>
<td>MySQL</td>
<td>5.7</td>
<td>不低于5.7，支持8.0高版本</td>
</tr>
<tr>
<td>MQ</td>
<td>ActiveMQ 或 RabbitMQ 或 RocketMQ</td>
<td>消息中间件</td>
</tr>
<tr>
<td>Nginx</td>
<td>x</td>
<td>非必须，反向代理使用，其他版本也支持</td>
</tr>
</tbody></table><p class="line">以上软件请自行百度安装，MySQL、Redis、Nginx 的安装推荐使用宝塔安装，宝塔下如何安装请自行查阅文档。</p><h2 id="8e9to2" class="markdown-heading"><a name="8e9to2" class="reference-link"></a><span class="header-link octicon octicon-link"></span>一键部署</h2><blockquote class="default">
<p class="line">注意事项： </p>
<ol>
<li>使用一键部署最好是全新服务器， 因为构建过程会使用Docker安装基础服务和官方镜像，也会拉取jeepay源代码。<br></li><li>默认的安装目录为： /jeepayhomes 也是官方的最佳实践。<br></li><li>mysql默认端口3306， 默认密码: jeepaydb123456 <br></li><li>项目访问地址 （注意开通端口防火墙）：<br>运营平台： http://外网IP:19217   账号密码： jeepay/jeepay123<br>商户平台： http://外网IP:19218   账号密码： 需要登录运营平台手动创建。<br>支付网关： http://外网IP:19216   “<br></li><li>启动完成后，需进入系统设置配置外网地址后方可进行测试。 <br></li></ol>
</blockquote><p class="line">CentOS 安装脚本 （推荐Anolis OS 8.8）： </p><pre class="hljs ruby"><code class="language-bash">yum install -y wget &amp;&amp; wget -O install.sh <span class="hljs-symbol"><span class="hljs-symbol">https:</span></span>/<span class="hljs-regexp"><span class="hljs-regexp">/gitee.com/jeequan</span></span><span class="hljs-regexp"><span class="hljs-regexp">/jeepay/raw</span></span><span class="hljs-regexp"><span class="hljs-regexp">/master/docs</span></span><span class="hljs-regexp"><span class="hljs-regexp">/install/install</span></span>.sh &amp;&amp; sh install.sh</code></pre><p class="line">Ubuntu 安装脚本 （推荐  Ubuntu 22.04 64位）： </p><pre class="hljs sql"><code class="language-bash">apt <span class="hljs-keyword"><span class="hljs-keyword">update</span></span> &amp;&amp; apt-<span class="hljs-keyword"><span class="hljs-keyword">get</span></span> -y <span class="hljs-keyword"><span class="hljs-keyword">install</span></span> docker.io &amp;&amp; apt-<span class="hljs-keyword"><span class="hljs-keyword">get</span></span> -y <span class="hljs-keyword"><span class="hljs-keyword">install</span></span> git &amp;&amp; wget -O install.sh https://gitee.com/jeequan/jeepay/<span class="hljs-keyword"><span class="hljs-keyword">raw</span></span>/<span class="hljs-keyword"><span class="hljs-keyword">master</span></span>/docs/<span class="hljs-keyword"><span class="hljs-keyword">install</span></span>/install.sh &amp;&amp; sh install.sh</code></pre><p class="line">视频教程：<br>【jeepay开源聚合支付系统一键部署和测试教程】 <a href="https://www.bilibili.com/video/BV17C411Y7EZ/?share_source=copy_web&amp;vd_source=e48f1c20ae2c74b29a0b959a168914f2" target="_blank">https://www.bilibili.com/video/BV17C411Y7EZ/?share_source=copy_web&amp;vd_source=e48f1c20ae2c74b29a0b959a168914f2</a></p><p class="line">温馨提示： </p><ol>
<li><p class="line">由于一键脚本会占用： 3306(mysql) / 6379(redis) / 61616(mq) /19216/19217/19218等默认端口。 请务必检查端口占用情况, <strong>如被占用将导致启动失败</strong>。 </p>
</li><li><p class="line">如果有安装<strong>宝塔等面板工具</strong>也请先<strong>关闭</strong>nginx/redis/mysql等默认服务， 或等一键安装完成后再安装宝塔等面板工具即可。</p>
</li><li><p class="line">若还是启动报错可以尝试使用一键<strong>卸载</strong>脚本执行后再试 [ <strong>！！谨慎执行， 此脚本将删除DB, 删除程序！！！</strong> ]：</p>
<pre class="hljs ruby"><code class="language-bash">wget -O uninstall.sh <span class="hljs-symbol"><span class="hljs-symbol">https:</span></span>/<span class="hljs-regexp"><span class="hljs-regexp">/gitee.com/jeequan</span></span><span class="hljs-regexp"><span class="hljs-regexp">/jeepay/raw</span></span><span class="hljs-regexp"><span class="hljs-regexp">/master/docs</span></span><span class="hljs-regexp"><span class="hljs-regexp">/install/uninstall</span></span>.sh &amp;&amp; sh uninstall.sh</code></pre>
</li></ol><h2 id="5x89iw" class="markdown-heading"><a name="5x89iw" class="reference-link"></a><span class="header-link octicon octicon-link"></span>服务端部署</h2><ol>
<li>项目下载</li></ol><pre class="hljs php"><code class="language-bash">git <span class="hljs-keyword"><span class="hljs-keyword">clone</span></span> https:<span class="hljs-comment"><span class="hljs-comment">//gitee.com/jeequan/jeepay.git</span></span></code></pre><ol start="2">
<li>项目编译</li></ol><p class="line">使用命令行进入项目内（应该在jeepay项目最外层的pom.xml中， 不可进入到jeepay-manager项目下执行，否则会出现问题）</p><pre class="hljs java"><code class="language-bash">$ mvn <span class="hljs-keyword"><span class="hljs-keyword">package</span></span></code></pre><p class="line"><code>注意：</code> windows 建议使用 【cmd】  若使用【powershell】可能会出现问题。<br><code>其他知识点：</code> powershell  添加参数需要使用： mvn package ‘-Dmaven.test.skip=true’ 添加引号的方式， 否则会报错。</p><p class="line">编译成功后，会在每个模块的<code>target</code>下会生成下面名字的<code>.jar</code>文件，如下：</p><pre class="hljs"><code>jeepay-manager/target/jeepay-manager.jar
jeepay-merchant/target/jeepay-merchant.jar
jeepay-payment/target/jeepay-payment.jar</code></pre><ol start="3">
<li>项目启动</li></ol><p class="line">1）使用<code>root</code>用户登录云服务器，创建<code>jeepay</code>用户，切换到jeepay用户，并在<code>/home/jeepay</code>目录下创建<code>service</code>和<code>upload</code>文件目录。参考命令如下：</p><pre class="hljs perl"><code class="language-bash"><span class="hljs-comment"><span class="hljs-comment"># 创建用户</span></span>
useradd jeepay
<span class="hljs-comment"><span class="hljs-comment"># 切换用户</span></span>
su jeepay
<span class="hljs-comment"><span class="hljs-comment"># 进入目录</span></span>
cd /home/jeepay/
<span class="hljs-comment"><span class="hljs-comment"># 创建目录service和upload</span></span>
<span class="hljs-keyword"><span class="hljs-keyword">mkdir</span></span> service &amp;&amp; <span class="hljs-keyword"><span class="hljs-keyword">mkdir</span></span> upload</code></pre><p class="line">2）在<code>service</code>目录下创建目录<code>manager,merchant,payment</code>，然后将上面编译后的.jar文件分别传入对应的目录中。</p><pre class="hljs perl"><code class="language-bash"><span class="hljs-comment"><span class="hljs-comment"># 进入到service目录下</span></span>
cd /home/jeepay/service
<span class="hljs-comment"><span class="hljs-comment"># 创建目录manager,merchant,payment</span></span>
<span class="hljs-keyword"><span class="hljs-keyword">mkdir</span></span> manager &amp;&amp; <span class="hljs-keyword"><span class="hljs-keyword">mkdir</span></span> merchant &amp;&amp; <span class="hljs-keyword"><span class="hljs-keyword">mkdir</span></span> payment</code></pre><p class="line">3）初始化数据库，在msyql5.7下创建数据库<code>jeepaydb</code>，用户<code>jeepay</code>，密码<code>123456</code>（数据库和账号密码可自己设定，密码不要过于简单）。   </p><p class="line">执行项目下 <code>docs/sql/init.sql</code> ，确保所有语句执行成功。</p><p class="line">4）下面以启动<code>manager</code>为例</p><p class="line">将项目下 <code>docs/scpript/app.sh</code> 上传到至 /home/jeepay/service/manager 下。</p><p class="line">将项目下 <code>conf/manager/application.yml</code> 上传至 /home/jeepay/service/manager 下。</p><p class="line">此时manager目录下应该有 jeepay-manager.jar、app.sh、application.yml 三个文件。</p><p class="line">修改 <code>application.yml</code> 中的配置为你自己环境对应配置，主要包括服务端口、数据库连接配置、Redis配置、ActiveMQ配置等。</p><pre class="hljs bash"><code class="language-java">server:
  port: 9217 <span class="hljs-comment"><span class="hljs-comment">#设置端口为9217</span></span>
spring:
  datasource:
    <span class="hljs-comment"><span class="hljs-comment"># yml填写url连接串， 无需将&amp;符号进行转义</span></span>
    url: jdbc:mysql://127.0.0.1:3306/jeepaydb?zeroDateTimeBehavior=convertToNull&amp;useUnicode=<span class="hljs-literal"><span class="hljs-literal">true</span></span>&amp;characterEncoding=utf-8&amp;autoReconnect=<span class="hljs-literal"><span class="hljs-literal">true</span></span>&amp;useSSL=<span class="hljs-literal"><span class="hljs-literal">false</span></span>
    username: jeepay
    password: 123456
  redis:
    host: 127.0.0.1
    port: 6379
    password: 
  <span class="hljs-comment"><span class="hljs-comment">#activeMQ配置</span></span>
  activemq:
    broker-url: tcp://localhost:61616  <span class="hljs-comment"><span class="hljs-comment">#连接地址</span></span>

<span class="hljs-comment"><span class="hljs-comment">#日志配置参数</span></span>
logging:
  level:
    root: info   <span class="hljs-comment"><span class="hljs-comment">#主日志级别</span></span>
    com.jeequan.jeepay: debug   <span class="hljs-comment"><span class="hljs-comment">#该项目日志级别，当需要打印sql时请开启为debug</span></span>
  path: ./logs  <span class="hljs-comment"><span class="hljs-comment">#日志存放地址</span></span>

<span class="hljs-comment"><span class="hljs-comment">#系统业务参数</span></span>
isys:
  allow-cors: <span class="hljs-literal"><span class="hljs-literal">true</span></span> <span class="hljs-comment"><span class="hljs-comment">#是否允许跨域请求 [生产环境建议关闭， 若api与前端项目没有在同一个域名下时，应开启此配置或在nginx统一配置允许跨域]</span></span>
  jwt-secret: P982P8e6472qTc3u <span class="hljs-comment"><span class="hljs-comment">#生成jwt的秘钥。 要求每个系统有单独的秘钥管理机制。</span></span>
  <span class="hljs-comment"><span class="hljs-comment"># 文件系统配置项（系统内oss， 并非云oss）</span></span>
  oss-file:
    root-path: /home/jeepay/upload <span class="hljs-comment"><span class="hljs-comment">#存储根路径 ( 无需以‘/’结尾 )</span></span></code></pre><p class="line">启动manager项目：<code>sh ./app.sh start</code><br>常用命令：<code>start</code> 启动程序   <code>stop</code> 停止程序 <code>restart</code> 重启程序</p><p class="line">查看系统日志：<code>tail -f ./logs/mgr.all.log</code>  注：如果日志没内容，可能启动失败，查看start.log日志：<code>tail -f ./start.log</code> 看问题。</p><p class="line">其他 <code>merchant</code> 和 <code>payment</code> 参考manager项目启动即可。</p><h2 id="clld99" class="markdown-heading"><a name="clld99" class="reference-link"></a><span class="header-link octicon octicon-link"></span>前端部署</h2><ol>
<li>项目下载</li></ol><pre class="hljs php"><code class="language-ssh">git <span class="hljs-keyword"><span class="hljs-keyword">clone</span></span> https:<span class="hljs-comment"><span class="hljs-comment">//gitee.com/jeequan/jeepay-ui.git</span></span></code></pre><ol start="2">
<li>项目编译</li></ol><p class="line">1）项目下载后在<code>jeepay-ui</code>下会有三个目录，分别是:</p><pre class="hljs"><code>jeepay-ui-manager：运营平台对应的前端代码
jeepay-ui-merchant：商户系统对应的前端代码
jeepay-ui-cashier：支付收银台前端代码（只有用到聚合扫码收银台时才需要部署）</code></pre><p class="line">2）以 <code>jeepay-ui-manager</code> 为例</p><p class="line">进入到目录 <code>jeepay-ui-manager</code> 下，修改服务端接口配置。</p><p class="line">修改文件 <code>.env</code> 中的 <code>VUE_APP_API_BASE_URL</code> 配置，如果前端和服务端部署在同一域名下，该值留空，否则需要设置为服务端接口地址。</p><p class="line">修改为manager服务地址，如：<a href="http://mgr.xxx.com/" target="_blank">http://mgr.xxx.com</a>  或 <a href="http://202.112.102.18:9217/" target="_blank">http://202.112.102.18:9217</a>  (域名和ip端口以你服务端真实部署为准)。</p><p class="line">3）修改后按如下命令执行</p><p class="line">安装依赖：<code>npm install</code></p><p class="line">打包文件：<code>npm run build</code></p><p class="line">打包后，生成dist目录，将dist目录下所有文件上传至服务器（建议上传OSS，使用CDN加速效果访问效果更好）。</p><p class="line">其他 jeepay-ui-manager 和 jeepay-ui-cashier 参考 manager 的打包和部署</p><h2 id="a2okpl" class="markdown-heading"><a name="a2okpl" class="reference-link"></a><span class="header-link octicon octicon-link"></span>Nginx配置</h2><p class="line">将域名<code>mgr.x.jeepay.vip</code>，<code>mch.x.jeepay.vip</code>，<code>pay.x.jeepay.vip</code>解析到服务器IP</p><p class="line">manager项目配置</p><pre class="hljs nginx"><code class="language-lua"><span class="hljs-attribute"><span class="hljs-attribute">upstream</span></span> mgr-api {
    <span class="hljs-attribute"><span class="hljs-attribute">server</span></span> <span class="hljs-number"><span class="hljs-number">127.0.0.1:9217</span></span> weight=<span class="hljs-number"><span class="hljs-number">1</span></span> max_fails=<span class="hljs-number"><span class="hljs-number">2</span></span> fail_timeout=<span class="hljs-number"><span class="hljs-number">30s</span></span>;
}

<span class="hljs-section"><span class="hljs-section">server</span></span>
{
    <span class="hljs-attribute"><span class="hljs-attribute">listen</span></span> <span class="hljs-number"><span class="hljs-number">80</span></span>;
    <span class="hljs-attribute"><span class="hljs-attribute">server_name</span></span> mgr.x.jeepay.vip;
    <span class="hljs-attribute"><span class="hljs-attribute">index</span></span> index.html index.htm ;
    <span class="hljs-attribute"><span class="hljs-attribute">root</span></span> /home/jeepay/html/manager;

    <span class="hljs-comment"><span class="hljs-comment">#解决vue刷新404问题</span></span>
    <span class="hljs-attribute"><span class="hljs-attribute">try_files</span></span> <span class="hljs-variable"><span class="hljs-variable">$uri</span></span> <span class="hljs-variable"><span class="hljs-variable">$uri</span></span>/ /index.html;

    <span class="hljs-attribute"><span class="hljs-attribute">location</span></span> /api/
    {
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_next_upstream</span></span> http_502 http_504 <span class="hljs-literal"><span class="hljs-literal">error</span></span> timeout invalid_header;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Host  <span class="hljs-variable"><span class="hljs-variable">$host</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Real-IP <span class="hljs-variable"><span class="hljs-variable">$remote_addr</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Forwarded-For <span class="hljs-variable"><span class="hljs-variable">$proxy_add_x_forwarded_for</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_pass</span></span> http://mgr-api;
        <span class="hljs-comment"><span class="hljs-comment"># 启用支持websocket连接</span></span>
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Upgrade <span class="hljs-variable"><span class="hljs-variable">$http_upgrade</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Connection <span class="hljs-string"><span class="hljs-string">"upgrade"</span></span>;
    }

}</code></pre><p class="line">merchant项目配置</p><pre class="hljs nginx"><code class="language-lua"><span class="hljs-attribute"><span class="hljs-attribute">upstream</span></span> mch-api {
    <span class="hljs-attribute"><span class="hljs-attribute">server</span></span> <span class="hljs-number"><span class="hljs-number">127.0.0.1:9218</span></span> weight=<span class="hljs-number"><span class="hljs-number">1</span></span> max_fails=<span class="hljs-number"><span class="hljs-number">2</span></span> fail_timeout=<span class="hljs-number"><span class="hljs-number">30s</span></span>;
}

<span class="hljs-section"><span class="hljs-section">server</span></span>
{
    <span class="hljs-attribute"><span class="hljs-attribute">listen</span></span> <span class="hljs-number"><span class="hljs-number">80</span></span>;
    <span class="hljs-attribute"><span class="hljs-attribute">server_name</span></span> mch.x.jeepay.vip;
    <span class="hljs-attribute"><span class="hljs-attribute">index</span></span> index.html index.htm;
    <span class="hljs-attribute"><span class="hljs-attribute">root</span></span> /home/jeepay/html/merchant;

    <span class="hljs-comment"><span class="hljs-comment">#解决vue刷新404问题</span></span>
    <span class="hljs-attribute"><span class="hljs-attribute">try_files</span></span> <span class="hljs-variable"><span class="hljs-variable">$uri</span></span> <span class="hljs-variable"><span class="hljs-variable">$uri</span></span>/ /index.html;

    <span class="hljs-attribute"><span class="hljs-attribute">location</span></span> /api/
    {
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_next_upstream</span></span> http_502 http_504 <span class="hljs-literal"><span class="hljs-literal">error</span></span> timeout invalid_header;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Host  <span class="hljs-variable"><span class="hljs-variable">$host</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Real-IP <span class="hljs-variable"><span class="hljs-variable">$remote_addr</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Forwarded-For <span class="hljs-variable"><span class="hljs-variable">$proxy_add_x_forwarded_for</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_pass</span></span> http://mch-api;
        <span class="hljs-comment"><span class="hljs-comment"># 启用支持websocket连接</span></span>
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Upgrade <span class="hljs-variable"><span class="hljs-variable">$http_upgrade</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Connection <span class="hljs-string"><span class="hljs-string">"upgrade"</span></span>;
    }

}</code></pre><p class="line">payment项目配置</p><p class="line">两种方式 选择一种即可。 </p><p class="line">A： 收银台前端文件， 直接使用后端java项目内置资源</p><pre class="hljs nginx"><code class="language-lua"><span class="hljs-attribute"><span class="hljs-attribute">upstream</span></span> pay-api {
    <span class="hljs-attribute"><span class="hljs-attribute">server</span></span> <span class="hljs-number"><span class="hljs-number">127.0.0.1:9216</span></span> weight=<span class="hljs-number"><span class="hljs-number">1</span></span> max_fails=<span class="hljs-number"><span class="hljs-number">2</span></span> fail_timeout=<span class="hljs-number"><span class="hljs-number">30s</span></span>;
}

<span class="hljs-section"><span class="hljs-section">server</span></span>
{
    <span class="hljs-attribute"><span class="hljs-attribute">listen</span></span> <span class="hljs-number"><span class="hljs-number">80</span></span>;
    <span class="hljs-attribute"><span class="hljs-attribute">server_name</span></span> pay.x.jeepay.vip;
    <span class="hljs-attribute"><span class="hljs-attribute">index</span></span> index.html index.htm;
    <span class="hljs-attribute"><span class="hljs-attribute">root</span></span> /home/jeepay/html/payment;

    <span class="hljs-attribute"><span class="hljs-attribute">location</span></span> /
    {
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_next_upstream</span></span> http_502 http_504 <span class="hljs-literal"><span class="hljs-literal">error</span></span> timeout invalid_header;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Host  <span class="hljs-variable"><span class="hljs-variable">$host</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Real-IP <span class="hljs-variable"><span class="hljs-variable">$remote_addr</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Forwarded-For <span class="hljs-variable"><span class="hljs-variable">$proxy_add_x_forwarded_for</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_pass</span></span> http://pay-api;
    }

}</code></pre><p class="line">B： 收银台前端放置到nginx, 需要将jeepay-ui-uapp-cashier 进行打包操作。</p><pre class="hljs nginx"><code class="language-lua"><span class="hljs-attribute"><span class="hljs-attribute">upstream</span></span> pay-api {
    <span class="hljs-attribute"><span class="hljs-attribute">server</span></span> <span class="hljs-number"><span class="hljs-number">127.0.0.1:9216</span></span> weight=<span class="hljs-number"><span class="hljs-number">1</span></span> max_fails=<span class="hljs-number"><span class="hljs-number">2</span></span> fail_timeout=<span class="hljs-number"><span class="hljs-number">30s</span></span>;
}

<span class="hljs-section"><span class="hljs-section">server</span></span>
{
    <span class="hljs-attribute"><span class="hljs-attribute">listen</span></span> <span class="hljs-number"><span class="hljs-number">80</span></span>;
    <span class="hljs-attribute"><span class="hljs-attribute">server_name</span></span> pay.x.jeepay.vip;
    <span class="hljs-attribute"><span class="hljs-attribute">index</span></span> index.html index.htm;
    <span class="hljs-attribute"><span class="hljs-attribute">root</span></span> /home/jeepay/html/payment;

    <span class="hljs-attribute"><span class="hljs-attribute">location</span></span><span class="hljs-regexp"><span class="hljs-regexp"> ^~</span></span> /api/
    {
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_next_upstream</span></span> http_502 http_504 <span class="hljs-literal"><span class="hljs-literal">error</span></span> timeout invalid_header;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> Host  <span class="hljs-variable"><span class="hljs-variable">$host</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Real-IP <span class="hljs-variable"><span class="hljs-variable">$remote_addr</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_set_header</span></span> X-Forwarded-For <span class="hljs-variable"><span class="hljs-variable">$proxy_add_x_forwarded_for</span></span>;
        <span class="hljs-attribute"><span class="hljs-attribute">proxy_pass</span></span> http://pay-api;
    }

}</code></pre><p class="line"><code>注意：</code>使用B方式部署时，/home/jeepay/html/payment 目录下面需要新建cashier文件夹，在/home/jeepay/html/payment/cashier下存放index.html等前端打包文件文件。<br>目录结构： </p><pre class="hljs css"><code><span class="hljs-selector-tag"><span class="hljs-selector-tag">html</span></span>
 ∟ <span class="hljs-selector-tag"><span class="hljs-selector-tag">payment</span></span>
     ∟ <span class="hljs-selector-tag"><span class="hljs-selector-tag">cashier</span></span>
         <span class="hljs-selector-tag"><span class="hljs-selector-tag">index</span></span><span class="hljs-selector-class"><span class="hljs-selector-class">.html</span></span> (<span class="hljs-selector-tag"><span class="hljs-selector-tag">jeepay-ui-uapp-cashier</span></span> 打包文件)
        ∟ <span class="hljs-selector-tag"><span class="hljs-selector-tag">css</span></span>
        ∟ <span class="hljs-selector-tag"><span class="hljs-selector-tag">js</span></span></code></pre><h2 id="eh20l8" class="markdown-heading"><a name="eh20l8" class="reference-link"></a><span class="header-link octicon octicon-link"></span>初始账号</h2><p class="line">系统部署后初始账号密码。</p><p class="line"><code>运营平台</code></p><p class="line">账号：jeepay<br>密码：jeepay123</p><p class="line"><code>商户系统</code></p><p class="line">账号在运营平台创建, 默认密码：jeepay666</p><p class="line">登录商户系统后可测试支付下单流程。</p><h2 id="7sm7az" class="markdown-heading"><a name="7sm7az" class="reference-link"></a><span class="header-link octicon octicon-link"></span>官方演示环境</h2><p class="line">官方演示账号：<a href="https://www.jeequan.com/doc/detail_84.html" target="_blank">https://www.jeequan.com/doc/detail_84.html</a></p><p class="line">官方支付体验地址：<a href="https://www.jeequan.com/demo/jeepay_cashier.html" target="_blank">支付体验</a></p><div class="wiki-bottom">文档更新时间: 2024-06-12 18:59 &nbsp;&nbsp;作者：大森林</div></div>




































































</article></div>
                    
                    <div class="jump-top">
                        <a href="javascript:;" class="view-backtop"><i class="fa fa-arrow-up" aria-hidden="true"></i></a>
                    </div>
                </div>

            </div>
        </div>
        <div class="manual-progress"><b class="progress-bar"></b></div>
    <div id="manual-vsplitbar" unselectable="on" style="z-index: 301; position: absolute; user-select: none; cursor: col-resize; left: 275px; height: 100%; display: block; width: 3px;">                        <a href="javascript:void(0)" accesskey="" tabindex="0" title="vsplitbar"></a>                    </div></article>
    <div class="manual-mask"></div>
</div>


<div class="modal fade" id="downloadBookModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
                <h4 class="modal-title" id="myModalLabel">项目分享</h4>
            </div>
            <div class="modal-body">
                <div class="row">
                    <div class="col-sm-12 text-center" style="padding-bottom: 15px;">
                        <img src="./部署运行 - Powered by MinDoc_files/jeepay.png" alt="扫一扫手机阅读">
                    </div>
                </div>
                <div class="form-group">
                    <label for="password" class="col-sm-2 control-label">项目地址</label>
                    <div class="col-sm-10">
                        <input type="text" value="https://docs.jeequan.com/docs/jeepay" class="form-control" onmouseover="this.select()" id="projectUrl" title="项目地址">
                    </div>
                    <div class="clearfix"></div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
            </div>
        </div>
    </div>
</div>

<script src="./部署运行 - Powered by MinDoc_files/jquery.min.js.下载"></script>
<script src="./部署运行 - Powered by MinDoc_files/bootstrap.min.js.下载"></script>
<script src="./部署运行 - Powered by MinDoc_files/jquery.form.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/layer.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/jstree.min.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/nprogress.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/highlight.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/jquery.highlight.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/kancloud.js.下载" type="text/javascript"></script>
<script src="./部署运行 - Powered by MinDoc_files/splitbar.js.下载" type="text/javascript"></script>
<script type="text/javascript">
$(function () {
    $("#searchList").on("click","a",function () {
        var id = $(this).attr("data-id");
        var url = "https:\/\/docs.jeequan.com\/docs\/jeepay\//" + id;
        $(this).parent("li").siblings().find("a").removeClass("active");
        $(this).addClass("active");
        loadDocument(url,id,function (body) {
            return $(body).highlight(window.keyword);
        });
    });
});
</script>


<div id="screenity-ui"><div class="screenity-shadow-dom"><div><div class="screenity-scrollbar"></div><div class="screenity-scrollbar"></div></div><style type="text/css">
			#screenity-ui, #screenity-ui div {
				background-color: unset;
				padding: unset;
				width: unset;
				box-shadow: unset;
				display: unset;
				margin: unset;
				border-radius: unset;
			}
			.screenity-outline {
				position: absolute;
				z-index: 99999999999;
				border: 2px solid #3080F8;
				outline-offset: -2px;
				pointer-events: none;
				border-radius: 5px!important;
			}
		.screenity-blur {
			filter: blur(10px)!important;
		}
			.screenity-shadow-dom * {
				transition: unset;
			}
			.screenity-shadow-dom .TooltipContent {
  border-radius: 30px!important;
	background-color: #29292F!important;
  padding: 10px 15px!important;
  font-size: 12px;
	margin-bottom: 10px!important;
	bottom: 100px;
  line-height: 1;
	font-family: 'Satoshi-Medium', sans-serif;
	z-index: 99999999!important;
  color: #FFF;
  box-shadow: hsl(206 22% 7% / 35%) 0px 10px 38px -10px, hsl(206 22% 7% / 20%) 0px 10px 20px -15px!important;
  user-select: none;
	transition: opacity 0.3 ease-in-out;
  will-change: transform, opacity;
	animation-duration: 400ms;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform, opacity;
}

.screenity-shadow-dom .hide-tooltip {
	display: none!important;
}

.screenity-shadow-dom .tooltip-tall {
	margin-bottom: 20px;
}

.screenity-shadow-dom .tooltip-small {
	margin-bottom: 5px;
}

.screenity-shadow-dom .TooltipContent[data-state='delayed-open'][data-side='top'] {
	animation-name: slideDownAndFade;
}
.screenity-shadow-dom .TooltipContent[data-state='delayed-open'][data-side='right'] {
  animation-name: slideLeftAndFade;
}
.screenity-shadow-dom.TooltipContent[data-state='delayed-open'][data-side='bottom'] {
  animation-name: slideUpAndFade;
}
.screenity-shadow-dom.TooltipContent[data-state='delayed-open'][data-side='left'] {
  animation-name: slideRightAndFade;
}

@keyframes slideUpAndFade {
  from {
    opacity: 0;
    transform: translateY(2px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideRightAndFade {
  from {
    opacity: 0;
    transform: translateX(-2px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes slideDownAndFade {
  from {
    opacity: 0;
    transform: translateY(-2px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideLeftAndFade {
  from {
    opacity: 0;
    transform: translateX(2px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

#screenity-ui [data-radix-popper-content-wrapper] { z-index: 999999999999!important; } 

.screenity-shadow-dom .CanvasContainer {
	position: fixed;
	pointer-events: all!important;
	top: 0px!important;
	left: 0px!important;
	z-index: 99999999999!important;
}
.screenity-shadow-dom .canvas {
	position: fixed;
	top: 0px!important;
	left: 0px!important;
	z-index: 99999999999!important;
	background: transparent!important;
}
.screenity-shadow-dom .canvas-container {
	top: 0px!important;
	left: 0px!important;
	z-index: 99999999999;
	position: fixed!important;
	background: transparent!important;
}

.ScreenityDropdownMenuContent {
	z-index: 99999999999!important;
  min-width: 200px;
  background-color: white;
  margin-top: 4px;
  margin-right: 8px;
  padding-top: 12px;
  padding-bottom: 12px;
  border-radius: 15px;
  z-index: 99999;
  font-family: 'Satoshi-Medium', sans-serif;
  color: #29292F;
  box-shadow: 0px 10px 38px -10px rgba(22, 23, 24, 0.35),
    0px 10px 20px -15px rgba(22, 23, 24, 0.2);
  animation-duration: 400ms;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform, opacity;
}
.ScreenityDropdownMenuContent[data-side="top"] {
  animation-name: slideDownAndFade;
}
.ScreenityDropdownMenuContent[data-side="right"] {
  animation-name: slideLeftAndFade;
}
.ScreenityDropdownMenuContent[data-side="bottom"] {
  animation-name: slideUpAndFade;
}
.ScreenityDropdownMenuContent[data-side="left"] {
  animation-name: slideRightAndFade;
}
.ScreenityItemIndicator {
  position: absolute;
  right: 12px; 
  width: 18px;
  height: 18px;
  background: #3080F8;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.ScreenityDropdownMenuItem,
.ScreenityDropdownMenuRadioItem {
  font-size: 14px;
  line-height: 1;
  display: flex;
  align-items: center;
  height: 40px;
  padding: 0 5px;
  position: relative;
  padding-left: 22px;
  padding-right: 22px;
  user-select: none;
  outline: none;
}
.ScreenityDropdownMenuItem:hover {
    background-color: #F6F7FB !important;
    cursor: pointer;
}
.ScreenityDropdownMenuItem[data-disabled] {
  color: #6E7684; !important;
  cursor: not-allowed;
  background-color: #F6F7FB !important;
}



@keyframes slideUpAndFade {
  from {
    opacity: 0;
    transform: translateY(2px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideRightAndFade {
  from {
    opacity: 0;
    transform: translateX(-2px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes slideDownAndFade {
  from {
    opacity: 0;
    transform: translateY(-2px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideLeftAndFade {
  from {
    opacity: 0;
    transform: translateX(2px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

</style></div></div><div class="layui-layer-move"></div></body></html>